1. Field of the Invention
This invention relates to the field of storage devices, and more particularly to device independence in wear algorithms for storage devices.
2. Background
As electronic devices have continued to shrink in size, such devices have become increasingly popular, and so, ubiquitous. The desire for smaller devices has necessitated smaller storage devices. Smaller storage devices have a tendency to use their storage media more intensively, from a physical perspective. Intensive use of only a portion of the storage device's storage media can cause premature failure in certain storage devices. One solution is to more evenly distribute accesses to the storage device through the use of wear-leveling algorithms.
For example, such wear-leveling algorithms are important in the operation of semiconductor memories. One example of a memory type that benefits from the use of wear-leveling algorithms is a type of Electrically Erasable Programmable Read-Only Memory (EEPROM) known as flash memory. Flash memory can be used, for example, in memory cards and Universal Serial Bus (USB) storage devices, for the general storage and transfer of data between computers and other digital products.
Endurance is one of the key aspects of flash memory technology, describing the number of program and erase cycles that can be performed on a given physical block of the flash memory before that physical block wears out. The goal of wear-leveling algorithms is to evenly spread the program and erase cycles among the available blocks in the flash memory's memory array. Such wear leveling avoids a worn-out block compromising the reliability of the entire storage device. By spreading out the locations at which the program and erase cycles occur, such failures can be minimized. This is of importance, for example, in applications that treat such storage devices as fixed-media devices (e.g., the use of flash memory as a hard-disk drive). Such applications will typically attempt to localize read and write operations with the intention of improving a hard-disk drive's performance and efficiency, while reducing the physical stress experienced by the hard-disk drive. In a flash memory device, however, this has the opposite effect on reliability, while offering no particular benefits with regard to efficiency.
Wear-leveling algorithms thus seek to prevent the early deterioration of flash memory blocks hosting dynamic data due to the high cell stress induced by the frequent program and erase cycles that would otherwise be performed repeatedly on such blocks. This can be achieved, for example, by maintaining a block mapping table in the flash memory controller's memory. The block mapping table, implementing the wear-leveling algorithm employed, dynamically binds the block logical address to an alternative physical address. Of necessity, the wear-leveling algorithm (or more simply, the wear algorithm) is generic in nature, as a given flash memory device may be used in any one of a number of applications. Moreover, the wear algorithm used in a given device is designed to provide only a certain level of reliability (and thus, a given wear algorithm may not achieve the highest possible reliability for the given device, particularly when used in a specific application).
As a result, the wear algorithm provided in a given flash memory is likely to be less than optimal than for one or more specific applications accessing the storage device. However, it will be appreciated that neither the manufacturer's creation nor their implementation of multiple wear algorithms for a given storage device is practical (or even possible) alternative, given the wide array of uses to which such a storage device might be put. There is no way for the manufacturer to determine the manner in which a given storage device will be used, nor is it possible for the manufacturer to determine the optimal wear algorithm for each such use.
Equally difficult is the position of the original equipment manufacturer (OEM). Having multiple sources of storage devices for a given piece of equipment being manufactured, the OEM must provide some large number of device drivers, if the optimal lifetime is to be coaxed from the storage device actually installed in the equipment. This situation leads to bloating of the operating system's software. Moreover, the use of a new storage device and/or application will likely entail the addition of yet more device drivers, in order to maintain the storage device's lifetime. The need for device driver installation is particularly untenable in an end-user environment, and may well be either impractical or impossible in such circumstances. This situation leaves the OEM in a predicament—make no changes to the storage device and its use, or change the operating system software as needed. A solution to the dilemma presented by the desire for optimal storage device lifetime with flexibility in the use and replacement of such storage devices is therefore desirable.
The use of the same reference symbols in different drawings indicates similar or identical items.